//app.js
App({
  //小程序初始化完成时
  onLaunch: function () {
    //this.readToken();
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    });
    this.readToken();

  },
  //读取令牌
  readToken: function () {
    var token = wx.getStorageSync("token");
    var that = this;
    var token = that.globalData.token;
    if (!token) {
      that.getToken();
    }
    else {
      that.checkToken(token);
    }
  },
  //获取令牌
  getToken: function () {
    // 登录
    wx.login({
      success: function (res) {
        wx.request({
          url: 'http://111.230.44.126:88/api/v1/token/user',
          method: "post",
          data: {
            code: res.code
          },
          header: {
            "content-type": "application/json",
            "token": wx.getStorageSync("token")
          },
          success: function (res) {
            wx.setStorageSync("token", res.data.token);

            var code = res.statusCode.toString();
            //获取状态码的第一个字符
            var startChar = code.charAt(0);
            if (code == '401') {
              that.getToken();
            }
          }

        })
      }
    })
  },
  //检测令牌
  checkToken: function (token) {
    var that = this;
    wx.request({
      url: 'http://111.230.44.126:88/api/v1/token/verify',
      method: "post",
      data: {
        token: token
      },
      header:{
        "content-type":"application/json",
        "token":wx.getStorageSync("token")
      },
      success: function (res) {
        //获取状态码
        var code=res.statusCode.toString();
        //获取状态码的第一个字符
        var startChar=code.charAt(0);
        if(code=='401'){
          that.getToken();
        }

        var valid = res.data.isValid;

        //如果不合法
        if (!valid) {
          that.getToken();
        }
      },
      fail: function (Error){
        console.log(Error);
      }
    })

  },
  globalData: {
    userInfo: null
  }
})